본문으로 건너뛰기

2.3 Metastore DB 설정

  • Spark Thrift는 Hive의 Metastore DB를 사용하며, 관련 셋팅이 필요합니다.
  • 기존에 사용하고 있는 PostgreSQL DB가 있는 경우, 아래 2.3.2 PostgreSQL을 Metastore DB로 설정에서 hive 사용자 및 meta DB 생성 내용부터 참고를 해주시고, /usr/local/hive/conf 폴더 하위에 hive-site.xml 파일의 내용에서는 기존 DB에 설정되어있는 UserName, Password, ConnectionDriverName 및 ConnectionURL에 대한 value를 수정해주시기 바랍니다.
  • 기존에 사용하고 있는 RDBMS가 없는 경우, 아래 2.3.1 Metastore로 사용 할 데이터베이스 선택부터 순차적으로 진행해주시기 바랍니다.

2.3.1 Metastore로 사용 할 데이터베이스 선택

  • 기본적으로 Apache Spark은 Derby라는 기본 Metastore DB를 제공합니다.
  • 만약 기본적으로 제공되는 Derby 외 MySQL이나 PostgreSQL와 같은 RDBMS를 사용하는 경우에는 아래의 추가 과정을 통해 설정해주시기 바랍니다.
  • Ambari 또는 Cloudera Manager(HDP/CDH)에 의해 사용되는 DB 또한 Metastore로써 사용될 수 있습니다.

Thrift 서버는 단 하나의 metastore를 가질 수 있으며, 본 수동 설치 가이드에서는 기본적으로 PostgreSQL를 metastore DB로 사용함을 전제로 하여 작성하였습니다.


2.3.2 PostgreSQL을 Metastore DB로 설정


  • PostgreSQL 설치 (본 매뉴얼은 PostgreSQL 13을 기준으로 작성하였습니다)

    # PostgreSQL 설치 정보를 담고 있는 RPM 설치
    yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

    # PostgreSQL13 설치
    yum install -y postgresql13-server

  • PostgreSQL 서비스 시작

    systemctl enable postgresql-13
    systemctl start postgresql-13
    systemctl status postgresql-13

  • hive 사용자 및 meta DB 생성

    # postgres 계정으로 전환
    $su - postgres

    $psql

    # 기존 사용자 리스트 출력
    postgres=#\du

    # hive 사용자를 필요 권한 및 비밀번호 설정과 함께 생성
    postgres=#CREATE ROLE hive Superuser CreateDB LOGIN PASSWORD 'hive123!';

    # hive 사용자가 소유자인 hive 데이터베이스 생성
    postgres=#CREATE DATABASE hive OWNER hive;

    # 생성된 hive 데이터베이스 확인
    postgres=#\l

  • /var/lib/pgsql/13/data/pg_hba.conf 파일 내 아래 항목을 수정

    ...
    local all all trust
    local all all 127.0.0.1/32 trust
    ...

  • postgresql-13 서비스 재시작 및

    # 서비스 재시작
    systemctl restart postgresql-13

  • JDBC 다운로드
    wget https://jdbc.postgresql.org/download/postgresql-42.2.19.jar --no-check-certificate

  • 다운받은 JDBC *.jar 파일을 $HIVE_HOME/lib, $HIVE_HOME/jdbc, $SPARK_HOME/jars 폴더 하위에 복사
    cp postgresql-42.2.19.jar $HIVE_HOME/lib
    cp postgresql-42.2.19.jar $HIVE_HOME/jdbc
    cp postgresql-42.2.19.jar $SPARK_HOME/jars

  • /usr/local/hive/conf/usr/local/spark/conf 폴더 하위에 hive-site.xml 파일 생성한 뒤 아래 내용 추가
    (PostgreSQL의 설정 정보에서 Port는 5432(default)로 작성되었습니다)

    <configuration>
    <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>Username to use against metastore database</description>
    </property>

    <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive123!</value>
    <description>password to use against metastore database</description>
    </property>

    <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>org.postgresql.Driver</value>
    <description> Class name of JDBC Driver Metastore DB</description>
    </property>

    <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:postgresql://localhost:5432/hive</value>
    <description>
    JDBC connect string for a JDBC metastore.
    To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
    For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
    </description>
    </property>
    </configuration>

  • Hive metastore 초기화

    cd $HIVE_HOME/bin

    # Postgres
    ./schematool -initSchema -dbType postgres